Distributed transactions are often performed on distributed computing systems. A distributed transaction is a set of operations that update shared objects. Distributed transactions must satisfy the properties of Atomicity, Consistency, Isolation and Durability, known commonly as the ACID properties. According to the Atomicity property, either the transaction successfully executes to completion, and the effects of all operations are recorded, or the transaction fails. The Consistency property requires that the transaction does not violate integrity constraints of the shared objects. The Isolation property requires that intermediate effects of the transaction are not detectable to concurrent transactions. Finally, the Durability property requires that changes to shared objects due to the transaction are permanent.
In some distributed transaction systems, a single transaction coordinator directly manages all participants in the transaction. Therefore, each transaction participant, regardless of whether it operates on the same machine as the transaction coordinator or a remote machine, registers with the transaction coordinator and exchanges messages with the transaction coordinator. This can cause significant overhead due to a high volume of cross-machine interactions (e.g., remote invocations of the participants), and can slow down transactions and increase resource utilization.
In other distributed transaction systems, upon a remote machine receiving instructions for a service/resource on the remote machine to perform an action associated with a transaction managed by a parent coordinator, the remote machine immediately generates a subordinate coordinator and registers the subordinate coordinator with the parent coordinator. This is performed before any business logic is executed (e.g., before the services or other resources perform any actions associated with the transaction). Once the subordinate coordinator is registered with the parent coordinator, the subordinate coordinator must participate in a two-phase commit protocol managed by the parent coordinator, which may cause unnecessary cross-machine interactions.